免不必俗的,開賽的第一天總要介紹一下30天的主題跟方向,
這30天的系列文主要寫給已有 C# 基礎,或使用過dotnet framework跟dotnet core
但是想要更加深入的了解其中的運作原理的朋友們
主要會介紹的主題如下:
使用的開發環境如下:
既然是第一天,還是寫點輕鬆的東西
我們來談談過去的dotnet framework 不能跨平台與dotnet core 能夠跨平台的原因
先來點名詞解釋:
看下圖會比較好理解
來看看我們的C#(or F#, VB)程式碼 是怎麼在電腦上執行的
來源(wiki)
C# 程式碼經過編譯器編譯成 CIL,
接著 CLR 會將 CIL 轉成101010的機器碼在對應的系統上執行
接著我們拆解dotnet framework 的架構如下
可以簡化成
|-----|
App Model
|-----|
BCL
|-----|
CLR
|-----|
微軟最初可能並沒有考慮推出除了window以外的.Net
隨著時間演進,dotnet framework 中的東西越來越多,有web,有桌面應用程式,有WCF,WPF等等
Web 可能參考到BCL中的A, WCF可能用到B
功能越來越多,dotnet framework 的BCL也越來越肥,導致其要在CLR轉成機器碼的東西也越來越多。
總之,重點就是 dotnet framework 不支援將IL 翻到windows以外的OS
所以在dotnet core 中做了改進:
我們把重點放在Common base libaray 跟 infrastructure 上
Common base libaray 中定義了共用的模組,也就是所有appmodel 大部分共通的api會放在裡面
而runtime component 也支援將其翻成各作業系統支持的機器語言
跨平台的Dotnet Core已經推出了一段時間,一路更新到現在最新穩定版Dotnet 6
微軟目前已經推出.Net7 Preview了,且官方也說明未來Dotnet Framework不會更新新版本了
有著更多更有有趣且更方便的語法糖和執行效率等優點
好.Net Core 不學嗎
現在就讓我們來深入了解.Net Core框架吧